package com.sh.rbac.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sh.rbac.domain.dto.dict.item.DictItemDeleteDTO;
import com.sh.rbac.domain.dto.dict.item.DictItemQueryDTO;
import com.sh.rbac.domain.dto.dict.item.DictItemSaveDTO;
import com.sh.rbac.domain.dto.dict.item.DictItemUpdateDTO;
import com.sh.rbac.domain.entity.DictItem;

import java.util.List;

/**
 * @author lucky
 * @description 针对表【sys_dict_item(字典子项表)】的数据库操作Service
 * @createDate 2024-06-26 20:57:03
 */
public interface DictItemService extends IService<DictItem> {

    /**
     * 分页查询字典子项
     *
     * @param current          当前页
     * @param limit            每页显示条数
     * @param dictItemQueryDTO 查询条件
     * @return 分页查询结果
     */
    Page<DictItem> getPage(Long current, Long limit, DictItemQueryDTO dictItemQueryDTO);


    /**
     * 保存字典子项
     *
     * @param dictItemSaveDTO 字典子项保存对象
     * @return 是否保存成功
     */
    Boolean save(DictItemSaveDTO dictItemSaveDTO);


    /**
     * 更新字典子项
     *
     * @param dictItemUpdateDTO 字典子项更新对象
     * @return 是否更新成功
     */
    Boolean updateById(DictItemUpdateDTO dictItemUpdateDTO);


    /**
     * 根据字典编码查询字典子项
     *
     * @param dictCode 字典编码
     * @return 字典子项列表
     */
    List<DictItem> getListByDictCode(String dictCode);


    /**
     * 更新字典子项状态
     *
     * @param id     字典子项ID
     * @param status 状态
     * @return 是否更新成功
     */
    Boolean updateStatus(Long id, Integer status);

    /**
     * 删除字典子项
     *
     * @param dictItemDeleteDTO 字典子项删除对象
     * @return 是否删除成功
     */
    Boolean removeDictItem(DictItemDeleteDTO dictItemDeleteDTO);
}
